In traditional computer memory such as random access memory (RAM) the address of data is used to retrieve content stored in the memory. Searching to determine whether a table stored in RAM includes a particular value would require repeatedly retrieving the content stored in different memory addresses, comparing the content with the value, and repeating memory accesses until either a match is found or it is determined that the table does not store the particular value.
In contrast, content-addressable memory (CAM) uses a data word to search the contents of the entire memory to determine whether the word is stored anywhere in memory. CAM allows searching the memory based on the stored content. A table stored in CAM is searched in parallel to determine whether a particular content value matches any table entries stored in memory and when one or more matches are found CAM returns a list of the storage addresses where a match is found.
In binary CAM, each bit of stored data corresponds to a binary state of 0 or 1. Ternary content-addressable memory (TCAM) allows an additional state of “don't care” or “wildcard,” represented as “X”. For instance, an 8-bit TCAM can store a value of 01101XXX, which matches any of the values 01101000, 01101001, 01101010, 01101011, 01101100, 01101101, 01101110, and 01101111.
The use of the wildcard state allows fewer entries stored in TCAM. A typical application of TCAMs is in networking equipment such as a router where each address has two parts: a network address that varies in size depending on the sub-network configuration and a host address that uses the remaining bits in the address. The router maintains a routing table that includes don't care for the host address portion of the addresses. Each entry has a corresponding priority. The routing table also stores the routing information corresponding for each stored entry. Looking up the TCAM against a network address in an incoming packet results in the corresponding routing information. TCAM hardware compares the incoming value against all entries in the table in parallel. TCAM hardware returns the matching results for the highest priority entry.
Due to the parallel nature of TCAM, searching for content stored in TCAM is much faster than traditional RAM. However, implementing TCAM requires additional hardware components to perform parallel search, as well as masking, comparison, and priority determination. As a result, TCAM is more expensive than traditional memory, consumes more power, and generates more heat that has to be dissipated.